<!DOCTYPE html>
<html lang='en'>

<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>字符串中常用的方法</title>
    <link rel='stylesheet' href='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/default.min.css'>
    <script src='//cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js'></script>
</head>

<body>
    <pre>
        <code style='max-height: 400px;'>
            /**
            * 复习字符串常用方法
            * toString、charAt、sub、indexOf、include.....
            * 
           */
   
   
           //    通过索引获取某一个位置的值 charAt/charCodeAt  charCodeAt()获取指定的字符的编码值 (Ascii unicode)
           // 查找不到返回 空字符串 和str[0]这种下标越界返回undefined不一样 
           let str = '黄河之水天上来，奔流到海不复回。'
           console.log('charAt(0)', str.charAt(0), 'charCodeAt(0)', str.charCodeAt(0)); // 黄  40644
           // console.log(str.charCodeAt(10000)); // NaN charCodeAt下标越界时候返回的值为NaN
           // 字符串也有length属性 代表字符串的长度 --> 字符串也有索引
           console.log('字符串的长度为', str.length, '索引为0的字符为', str[0], '不存在的索引为undefined', str[100000]);
           
           let str1 = '君不见高堂明镜悲白发，朝如青丝暮成雪。'
           // substr(0,10) 下标开始截取多少长度 
           console.log('截取sub(1,10)从索引1开始截取10个字符',str1.substr(1,10));
           // substring()
           console.log('substring(1,10)从索引0开始截取到索引为10的不含10',str1.substring(1,10));
           // splice 支持负数作为索引 上面两个不支持使用负数作为索引值
           console.log('slice(1,10)',str1.slice(1,10));
           let str2 = '将登太行雪满山登'
   
           // indexOf  lastIndexoOf
           console.log('indexOf',str2.indexOf('登')); // 1
           console.log('indexOf不存在的',str2.indexOf('5456')); // -1
           console.log('lastIndexOf',str2.lastIndexOf('登')); // 7 最后一次出现的位置
           console.log('lastIndexOf不存在的',str2.lastIndexOf('4454564')); // -1
   
           // inclueds
           let str4 = '雨落的季节'
           console.log('includes',str4.includes('雨')); // true
           console.log('includes不存在',str4.includes('123456')); // false
   
           // toUpperCase() 大写 / toLowerCase() 小写
           let str5 = 'asdfghjkl'
           let str6 = 'ASDFGHJKL'
           console.log('将字符串小写',str6.toLowerCase()); // asdfghjkl
           console.log('将字符串大写',str5.toUpperCase()); // ASDFGHJKL
   
           // split 把字符串根据指定的字符进行分割 行成一个数组与join对应
           let splitStr = 'A|S|D|F|G|H|J|K|L'
           console.log('splitStr.split(|)',splitStr.split('|')); // ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L']
   
           // replace替换
           let replaceStr = 'A|S|D|F|G|H|J|K|L'
           let _replaceStr = replaceStr.replace('A|S','张三') // 张三|D|F|G|H|J|K|L
           console.log(replaceStr+'.replace(A|S','张三)',_replaceStr);
   
           // match方法
           let str7 = 'A|S|D|F|G|H|J|K|L'
           console.log('match',str7.match(/Ac/)); // null则是没有匹配到
           console.log('match',str7.match(/\|/g)); // 加上g是匹配所有的| 之后成一个数组 ['|', '|', '|', '|', '|', '|', '|', '|']
        </code>
     </pre>
    <script> hljs.highlightAll();</script>
    <script>
        /**
         * 复习字符串常用方法
         * toString、charAt、sub、indexOf、include.....
         * 
        */


        //    通过索引获取某一个位置的值 charAt/charCodeAt  charCodeAt()获取指定的字符的编码值 (Ascii unicode)
        // 查找不到返回 空字符串 和str[0]这种下标越界返回undefined不一样 
        let str = '黄河之水天上来，奔流到海不复回。'
        console.log('charAt(0)', str.charAt(0), 'charCodeAt(0)', str.charCodeAt(0)); // 黄  40644
        // console.log(str.charCodeAt(10000)); // NaN charCodeAt下标越界时候返回的值为NaN
        // 字符串也有length属性 代表字符串的长度 --> 字符串也有索引
        console.log('字符串的长度为', str.length, '索引为0的字符为', str[0], '不存在的索引为undefined', str[100000]);
        
        let str1 = '君不见高堂明镜悲白发，朝如青丝暮成雪。'
        // substr(0,10) 下标开始截取多少长度 
        console.log('截取sub(1,10)从索引1开始截取10个字符',str1.substr(1,10));
        // substring()
        console.log('substring(1,10)从索引0开始截取到索引为10的不含10',str1.substring(1,10));
        // splice 支持负数作为索引 上面两个不支持使用负数作为索引值
        console.log('slice(1,10)',str1.slice(1,10));
        let str2 = '将登太行雪满山登'

        // indexOf  lastIndexoOf
        console.log('indexOf',str2.indexOf('登')); // 1
        console.log('indexOf不存在的',str2.indexOf('5456')); // -1
        console.log('lastIndexOf',str2.lastIndexOf('登')); // 7 最后一次出现的位置
        console.log('lastIndexOf不存在的',str2.lastIndexOf('4454564')); // -1

        // inclueds
        let str4 = '雨落的季节'
        console.log('includes',str4.includes('雨')); // true
        console.log('includes不存在',str4.includes('123456')); // false

        // toUpperCase() 大写 / toLowerCase() 小写
        let str5 = 'asdfghjkl'
        let str6 = 'ASDFGHJKL'
        console.log('将字符串小写',str6.toLowerCase()); // asdfghjkl
        console.log('将字符串大写',str5.toUpperCase()); // ASDFGHJKL

        // split 把字符串根据指定的字符进行分割 行成一个数组与join对应
        let splitStr = 'A|S|D|F|G|H|J|K|L'
        console.log('splitStr.split(|)',splitStr.split('|')); // ['A', 'S', 'D', 'F', 'G', 'H', 'J', 'K', 'L']

        // replace替换
        let replaceStr = 'A|S|D|F|G|H|J|K|L'
        let _replaceStr = replaceStr.replace('A|S','张三') // 张三|D|F|G|H|J|K|L
        console.log(replaceStr+'.replace(A|S','张三)',_replaceStr);

        // match方法
        let str7 = 'A|S|D|F|G|H|J|K|L'
        console.log('match',str7.match(/Ac/)); // null则是没有匹配到
        console.log('match',str7.match(/\|/g)); // 加上g是匹配所有的| 之后成一个数组 ['|', '|', '|', '|', '|', '|', '|', '|']

    </script>
</body>

</html>